/******************************************************************************
                         COPYRIGHT 1955-2008 by BUPT ISC.
                        北京邮电大学信息安全中心 版权所有
                           Web: http://www.bupt.edu.cn
 *******************************************************************************/
/*******************************************************************************
  文件名： appender.h
  项目：   
  模块：   log
  作者：   huangwei
  版本：   0.2
  创建于:  2009-03-20
  描述：
  日志输出格式和位置自定义实现

  修改历史： 
  日期：     修改人：     修改描述：

 *********************************************************************************/
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <syslog.h>

#include "appender.h"

const char LOG_CODE[8][7] = {
    "EMERG", 
    "ALERT", 
    "CRIT", 
    "ERR", 
    "WARN", 
    "NOTICE", 
    "INFO", 
    "DEBUG"
};

/******************************************************************************
  函数名：logAppender
  功能描述：
    格式化写日志函数

  输入参数：
    int    消息级别
    char * 待记录的日志消息

  输出参数：
    无

  返回值：
    无
 *****************************************************************************/
void logAppender(int iPrio, char *pcMsg)
{
    switch(iLogPlace)
    {
        case OUT_CONSOLE:
            fprintf(pLogFile, "<%s> %s", LOG_CODE[iPrio], pcMsg);
            break;
        case OUT_FILE:
            fprintf(pLogFile, "<%s> %s", LOG_CODE[iPrio], pcMsg);
            fflush(pLogFile);
            break;
        case OUT_DB:     /* TODO 输出到数据库的设置 */
            break;
        case OUT_SYSLOG: /* 输出到syslog的设置 */
            syslog(iPrio, "%s", pcMsg);
            break;
        case OUT_SOCK:   /* 通过socket输出到日志服务器 */
            break;
        default:
            fprintf(pLogFile, "<%s> %s", LOG_CODE[iPrio], pcMsg);
            break;
    }
}
